package edu.unice.simul.vue.graphes;

import java.util.Hashtable;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.DefaultXYDataset;

/*
 * Classe permettant la cretion de graphe 
 * sous forme de Courbe
 * 

 */
public class Courbe extends JPanel {
	private static final long serialVersionUID = 7024482086505134384L;

	/**
	 * 
	 * @param infos
	 * @param titre
	 * @param abscisse
	 * @param ordonnee
	 */
	public Courbe(Hashtable infos, String titre, String abscisse, String ordonnee) {
		this.add(Courbepanel(infos, titre, abscisse, ordonnee));
	}

	// methode pour la creation creation du dataset
	private static DefaultXYDataset createDataset(Hashtable infos) {
		DefaultXYDataset dataset = new DefaultXYDataset();
		String s = "element representé ";

		double tab[][] = new double[2][infos.size()];
		int idx = 0;
		// remplissage du dataset avec le hashtable infos
		for (java.util.Enumeration e = infos.keys(); e.hasMoreElements();) {
			Comparable elt = (Comparable) e.nextElement();
			tab[1][idx] = (Double) infos.get(elt);
			tab[0][idx++] = Double.parseDouble(elt + "");
		}

		dataset.addSeries("Données", tab);

		return dataset;
	}

	// creation du panel contenant le graphe
	public ChartPanel Courbepanel(Hashtable infos, String titre, String abscisse,
			String ordonnee) {

		JFreeChart xychart = ChartFactory.createXYLineChart(titre, abscisse,
				ordonnee, createDataset(infos), PlotOrientation.VERTICAL, false, false,
				false);
		ChartPanel cpanel = new ChartPanel(xychart);
		return cpanel;
	}

}